//Set数据结构
let s = new Set()
s.add(1).add({a:4,b:5}).add([2,3]).add('imooc')
console.log(s)

//判断set结构是否可以迭代，使用for...of方式来判断,如果可以遍历，则是可以迭代
for(let key of s){
    console.log(key)
}

//Set数据结构的应用，对数组的去重
//1.对单个数组的去重
let arr = [1,4,5,4,2]
s = new Set(arr)
//如果是形参上面是rest参数，或者是等号左边；如果是实参，就是扩展运算符
console.log([...s])

//Map结构的学习
let obj = {}
let a = [1, 2, 3]
let b = Symbol()
let c = 'name'
//如果对象的键是其他类型，它会隐性将其转换为字符串类型
obj[a] = 6
//如果对象的属性是一个变量，则需要加上中括号，以数组的形式来读取或设置，不能以点的形式来读取或设置
obj[b] = 9
console.log(obj)

let set = new Set([2, 3, 4, 4, 3])
//用for...of来判断此数据是否可迭代不完全适用
for (let v of set) {
    console.log(v)
}
let map = new Map()
map.set(a, 6).set(b, 9).set(c, '张三')
console.log(map)

//模板字符串
let foo = function(a,b,c,d){
    console.log(a)
    console.log(b)
    console.log(c)
    console.log(d)
}
foo(1,2,3,4)
let test = 'hello'
let bar = {a:1,b:2}
foo`这是一个${test},我正在适用${bar}`
//a:

const regexp = /a/g

// 指定从2号位置（y）开始匹配
// regexp.lastIndex = 2

// 匹配成功
const match = regexp.exec('xaya')
console.log(match)

